SQLite数据库表是否存在
SQLite语句:
cmd.CommandText = "SELECT count(*) from sqlite_master where type='table' and name='tableName';
int a= Convert.ToInt32(cmd.ExecuteScalar());
如果存在,则返回数值1;
如果不存在,则返回数值0。
if ( a== 0) // 不存在此数据表
解释:每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的模式。 SQLITE_MASTER 表看起来如下:
CREATE TABLE sqlite_master (
type TEXT,
name TEXT,
tbl_name TEXT,
rootpage INTEGER,
sql TEXT
);
对于表来说,type 字段永远是 ‘table’,name 字段永远是表的名字。
示例
int count = 0; string tableName = offsetAngle.materialName + offsetAngle.thinkness.ToString(); try { using (SqliteCommand cmd = new SqliteCommand()) { cmd.CommandText = "SELECT count(*) from sqlite_master where type='table' and name='" + tableName + "'; "; if (Convert.ToInt32(cmd.ExecuteScalar()) == 0) // 不存在此数据表 { cmd.CommandText = string.Format(offsetAngleCreateStr, tableName); cmd.ExecuteNonQuery(); cmd.CommandText = string.Format(offsetAngleInsertStr, tableName, offsetAngle.angle.ToString(), offsetAngle.offsetAngle.ToString()); count = cmd.ExecuteNonQuery(); } else //存在此数据表,直接加数据 { cmd.CommandText = string.Format(offsetAngleInsertStr, tableName, offsetAngle.angle.ToString(), offsetAngle.offsetAngle.ToString()); count = cmd.ExecuteNonQuery(); } } }